/*
  将下面异步代码使用 Promise 的方法改进
  尽量用看上去像同步代码的方式
  setTimeout(function () {
    var a = 'hello'
    setTimeout(function () {
      var b = 'lagou'
      setTimeout(function () {
        var c = 'I ♥ U'
        console.log(a + b +c)
      }, 10)
    }, 10)
  }, 10)
*/
const fp = require('lodash/fp');

function coSetTimeOut(wait) {
  return function (str) {
    return new Promise(function (resolve, reject) {
      setTimeout(() => {
        resolve(str);
      }, wait);
    });
  };
}

const createTimeOut = fp.compose(
  coSetTimeOut(10),
  fp.join(''),
  (...args) => args
);

createTimeOut('hello')
  .then(res => {
    return createTimeOut(res, 'lagou');
  })
  .then(res => {
    return createTimeOut(res, 'I ❤ U');
  })
  .then(res => {
    console.log(res);
  });


